#ifndef __SOFT_I2C_H
#define __SOFT_I2C_H

#include "stm32f0xx_hal.h"

#define I2C_SDA_GPIO_CLK() 	__HAL_RCC_GPIOB_CLK_ENABLE()
#define I2C_SDA_GPIO_PORT 	GPIOB
#define I2C_SDA_GPIO_PIN		GPIO_PIN_9
#define I2C_SCL_GPIO_CLK() 	__HAL_RCC_GPIOB_CLK_ENABLE()
#define I2C_SCL_GPIO_PORT 	GPIOB
#define I2C_SCL_GPIO_PIN		GPIO_PIN_8

#define I2C_SDA_H HAL_GPIO_WritePin(I2C_SDA_GPIO_PORT,I2C_SDA_GPIO_PIN,GPIO_PIN_SET)
#define I2C_SDA_L HAL_GPIO_WritePin(I2C_SDA_GPIO_PORT,I2C_SDA_GPIO_PIN,GPIO_PIN_RESET)
#define I2C_SDA		HAL_GPIO_ReadPin(I2C_SDA_GPIO_PORT,I2C_SDA_GPIO_PIN)
#define I2C_SCL_H HAL_GPIO_WritePin(I2C_SCL_GPIO_PORT,I2C_SCL_GPIO_PIN,GPIO_PIN_SET)
#define I2C_SCL_L HAL_GPIO_WritePin(I2C_SCL_GPIO_PORT,I2C_SCL_GPIO_PIN,GPIO_PIN_RESET)

void I2C_Init(void);
int32_t I2C_CheckDevice(uint8_t devAddr);
void HAL_WriteByte(uint8_t devAddr,uint8_t addr,uint8_t c);
uint8_t HAL_ReadByte(uint8_t devAddr,uint8_t addr);
void HAL_ReadBytes(uint8_t devAddr,uint8_t addr,uint8_t *pBuf,uint32_t size);

#endif/*__SOFT_I2C_H*/
